// 模型的customShader相关特效
void fragmentMain(FragmentInput fsInput, inout czm_modelMaterial material) {
    // 1. 计算扫描光带效果（resCol）
    vec3 positionMC = fsInput.attributes.positionMC;
    vec3 positionWC = fsInput.attributes.positionWC;
    float iTime = fract(czm_frameNumber / 60.0); // 扫描动画时间
    
    // 高度相关参数（根据实际模型调整）
    float _baseHeight = minHeight; 
    float _heightRange = maxHeight;
    float czm_height = positionMC.y - _baseHeight - 65.0; // 高度偏移
    
    // 扫描光带计算
    float lightDistance = length(positionWC - u_LightCenter);
    vec3 resCol = vec3(0.0); // 默认无扫描光带
    if (lightDistance < u_SpaceDistance) {
        float czm_s = lightDistance / u_SpaceDistance;
        // 扫描范围内的区域高亮（白色）
        if (czm_s > iTime && czm_s < iTime + u_ScanWidth) {
            resCol = vec3(1.0, 1.0, 1.0) * 0.5; // 扫描光带强度（0.5避免过亮）
        }
    }
    
    // 2. 计算高度渐变因子（调整亮度heightFactor）
    float baseColor = czm_height / _heightRange; // 顶部渐变因子（0~1）
    float bottomColor = czm_height / _heightRange * 1.5; // 底部渐变因子（增强亮度）
    // 限制因子范围，避免过曝（0~1.2）
    baseColor = clamp(baseColor, 0.0, 1.2);
    bottomColor = clamp(bottomColor, 0.0, 1.2);
    
    // 根据高度选择渐变因子（底部用bottomColor，顶部用baseColor）
    float heightFactor = czm_height < 29.0 ? bottomColor : baseColor;
    
    // 3. 计算贴图颜色（baseTextureColor）
    // 计算UV坐标（根据法线方向区分不同面）
    // 注意此模型y轴向上
    float cosX = dot(vec3(1.0, 0.0, 0.0), v_NormalMC);
    vec2 uv = vec2(1.0, 1.0);
    if (cosX > 0.9 || cosX < -0.9) {
        // 前后表面：Y-Z平面展开UV
        uv.x = positionMC.y / u_TextureSize;
        uv.y = positionMC.z / u_TextureSize;
    } else {
        // 左右表面：Y-X平面展开UV
        uv.x = positionMC.y / u_TextureSize;
        uv.y = positionMC.x / u_TextureSize;
    }
    // 采样贴图颜色
    vec4 texColor = texture2D(u_NightTexture, uv);
    vec3 baseTextureColor = texColor.rgb;
    
    // 4. 混合贴图与效果（核心逻辑）
    vec3 finalColor;
    // 判断是否为顶部（不贴图区域）
    float cosZ = dot(vec3(0.0, 1.0, 0.0), v_NormalMC); // 顶部法线朝上
    if (cosZ > 0.9) {
        // 顶部：固定基础色 + 扫描光带
        vec3 topBaseColor = czm_height>80.?vec3(0.3, 0.3, 0.3):vec3(0.1, 0.1, 0.1); // 顶部基础暗色调
        finalColor = topBaseColor + resCol; // 叠加扫描光带高亮
        
    } else {
        // 非顶部：贴图颜色 + 高度渐变调整 + 扫描光带
        // 步骤1：用高度因子调整贴图亮度（相乘保留色相）
        vec3 adjustedTexture = baseTextureColor * (2. + heightFactor); // 0.9是基础亮度
        // 步骤2：叠加扫描光带效果（相加增强高亮）
        finalColor = adjustedTexture + resCol;
    }
    
    // 限制颜色范围，避免过曝（RGB值超过1.0会变白）
    // finalColor = clamp(finalColor, 0.0, 1.0);
    
    // 输出最终颜色
    material.diffuse = finalColor;
}